perm filename TEST2[1,DBL] blob sn#016203 filedate 1972-12-12 generic text, type T, neo UTF8
00100	BEGIN
64200	EXPR REC2(FN,A,N,RELATEDF);
64300	     BEGIN NEW I,II,I1,I2,KK,JJ1,JJ2;
64400	     EE1←NIL;
64500	     EE2 ← NIL;
64600	     L1← NIL;
64700	     L2 ← NIL;
64800	     E←NIL;
64900	     MA←T;
65000	     MN←T;
65100	     MAL←T;
65200	     MA2 ←T;
65300	      MN2←T;
65400	     MAL2←T;
65500	     E1←NIL;
65600	     E2←NIL;
65700	     EXAMPLE[NEX+2,1]←L;
65800	     FOR NEW X←1 TO NEX+1 DO BEGIN
65900	       E1← EXAMPLE[X+1,1,1];
66000	       E2← EXAMPLE[X+1,1,2];
66100	     MA← MA AND ATOM(E1);
66200	     MA2← MA2 AND ATOM(E2);
66300	     MN ← MN AND NUMBER(E1);
66400	     MN2 ← MN2 AND NUMBER(E2);
66500	     MAL ← MAL AND ANYLIST(E1);
66600	     MAL2 ← MAL2 AND ANYLIST(E2);
66700	     END;
66800	     I← '(ANY ANY);
66900	     IF MAL THEN I[1] ← 'ANYLIST;
67000	     IF MAL2 THEN I[2] ← 'ANYLIST;
67100	     IF MA THEN I[1] ← 'ATOM;
67200	     IF MA2 THEN I[2] ← 'ATOM;
67300	     IF MN THEN I[1] ← 'NUMBER;
67400	     IF MN2 THEN I[2] ← 'NUMBER;
67500	     PUTPROP ('FN2, I, 'TARGS);
67600	     PUTPROP ('FN2, 2, 'NARGS);
67700	     PUTPROP ('FN2, 'ANY, 'TRES);
67800	     IHOLD← I;
67900	     PRINTSTR '"DO YOU KNOW THE TYPE OF ARGUMENTS FOR THE FN?
68000	        MY GUESS IS";
68100	     PRINC (IHOLD);
68200	     PRINTSTR '"     ANSWER N MEANS GUESS IS OK,
68300	       ANSWER Y MEANS YOU WANT TO CHANGE MY GUESS ...";
68400	     I←READ();
68500	     IF I='Y THEN BEGIN
68600	      PRINTSTR '"TYPE IN TWO OF THE WORDS:
68700	     ANY  ANYLIST  NUMBER  LISTP
68800	                          ( LISTP MEANS A NONNULL LIST)...";
68900	     I ← READ();
69000	     II ← READ();
69100	     IHOLD ← <I,II>;
69200	      PUTPROP('FN2, IHOLD, 'TARGS);
69300	     END;
69400	     FOR NEW K←1 TO 19 DO
69500	     ORD[K]←INTERSECTION(RELATEDF[1]@RELATEDF[2]@<'FN2>
69600	       @RELATEDF[3]@RELATEDF[4], ORDER2[K]);
69700	     FOR NEW K←1 TO 19 DO
69800	       ORD[K] ← RANK(K,ORD);
69900	     PRINTSTR '"DO YOU WANT TO CUT DOWN THE POSSIBILITIES?";
70000	     I←READ();
70100	     IF I='Y THEN  FOR NEW X←1 TO 19 DO
70200	     BEGIN
70300	     PRINT <'ORD,X,ORD[X]>;
70400	     PRINTSTR '"NOW RETYPE THIS SECTION OF ORD:";
70500	     I←READ();
70600	     IF NOT(I='S) THEN ORD[X]←I;
70700	     END;
70800	     IF C1='UNKNOWN THEN C1=T;
70900	     IF C3='UNKNOWN THEN C3=T;
71000	     I←NIL; II←NIL;
71100	     LIMINF←LIMINFBASE;
71200	     TAGF1 ← F1;
71300	    TAGF7 ← F7;
71400	    FOR NEW T2 ← 1 TO LENGTH(ORD[2]) DO BEGIN
71500	       F2 ← ORD[2,T2];
71600	     IF GREATERP(MSGLEVEL,0) THEN
71700	       PRINT <2,'T2,T2,'F2,F2>;
71800	     IF GREATERP(MSGLEVEL,49) THEN
71900	     PRINT<'L,L,'RELATEDFUNCTIONS,RELATEDF,'ORD,ORD>;
72000	     IF FOR NEW X← 2 TO NEX+1; AND
72100	        MAT(EXAMPLE[X,1],F2)        THEN
72200	     FOR NEW T3 ← 1 TO LENGTH(ORD[3]) DO BEGIN
72300	       F3←ORD[3,T3];
72400	     IF GREATERP(MSGLEVEL,1) THEN
72500	        PRINT <3,'T3,T3,'F3,F3>;
72600	      IF FOR NEW X←2 TO NEX+1; AND
72700	        MAT3(EXAMPLE[X,1],F3) THEN
72800	        FOR NEW T1←1 TO LENGTH(ORD[1]) DO BEGIN
72900	        F1← ORD[1,T1];
73000	       IF GREATERP(MSGLEVEL,2) THEN PRINT <1,'T1,T1,'F1,F1>;
73100	       IF FOR NEW X←2 TO NEX+1; AND
73200	           MAT2(EXAMPLE[X,1],F1,F2,F3) AND
73300	           (TAGF1 OR GOODEX=NIL OR F1(F2 (GOODEX[1,1]),
73400	             F3(GOODEX[1,2]))=C1) THEN
73500	     FOR NEW T5←1 TO LENGTH(ORD[5]) DO BEGIN
73600	     F5 ← ORD[5,T5];
73700	     IF GREATERP(MSGLEVEL,4) THEN PRINT<5,'T5,T5,'F5,F5>;
73800	      IF FOR NEW X←2 TO NEX+1; AND MAT(EXAMPLE[X,1],F5) THEN
73900	     FOR NEW T6←1 TO LENGTH(ORD[6]) DO BEGIN
74000	     F6 ← ORD[6,T6];
74100	     IF GREATERP(MSGLEVEL,5) THEN PRINT <6,'T6,T6,'F6,F6>;
74200	     IF FOR NEW X←2 TO NEX+1; AND MAT3(EXAMPLE[X,1],F6) THEN
74300	     FOR NEW T4← 1 TO LENGTH(ORD[4]) DO BEGIN
74400	     F4←ORD[4,T4];
74500	     IF GREATERP(MSGLEVEL,6) THEN PRINT <4,'T4,T4,'F4,F4>;
74600	     IF FOR NEW X←2 TO NEX+1; AND
74700	       MAT2(EXAMPLE[X,1],F4,F5,F6) AND
74800	       (LENGTH(ORD[4])=1 OR C2=NIL OR C2=UNKNOWN
74900	         OR F4(F5(L),F6(M))=C2)  THEN
75000	     FOR NEW T8←1 TO LENGTH(ORD[8]) DO BEGIN
75100	     F7←ORD[7,T7];
75200	     IF(GREATERP(MSGLEVEL,6)) THEN PRINT <7,'T7,T7,'F7,F7>;
75300	     IF FOR NEW X←2 TO NEX+1; AND MAT(EXAMPLE[X,1],F7) THEN
75400	     FOR NEW T9←1 TO LENGTH(ORD[9]) DO BEGIN
75500	     F9 ← ORD[9,T9];
75600	     IF GREATERP(MSGLEVEL,7) THEN PRINT <9,'T9,T9,'F9,F9>;
75700	     IF FOR NEW X←2 TO NEX+1; AND MAT3(EXAMPLE[X,1],F9) THEN
75800	     FOR NEW T7←1 TO LENGTH(ORD[7]) DO  BEGIN
75900	     F7←ORD[7,T7];
76000	     IF GREATERP(MSGLEVEL,8) THEN PRINT <7,'T7,T7,'F7,F7 >;
76100	     IF FOR NEW X←2 TO NEX+1; AND
76200	       MAT2(EXAMPLE[X,1],F7,F8,F9) AND
76300	       (TAGF7 OR GOODEX2=NIL OR
76400	        F7(F8(GOODEX2[1,1]),F9(GOODEX2[1,2]))=C3) THEN
76500	     FOR NEW T11←1 TO LENGTH(ORD[11]) DO BEGIN
76600	     F11←ORD[11,T11];
76700	     IF GREATERP(MSGLEVEL,9) THEN PRINT <11,'T11,T11,'F11,F11>;
76800	     IF FOR NEW X←2 TO NEX+1; AND MAT(EXAMPLE[X,1],F11) THEN
76900	     FOR NEW T12←1 TO LENGTH(ORD[12]) DO BEGIN
77000	     F12←ORD[12,T12];
77100	     IF GREATERP(MSGLEVEL,10) THEN PRINT <12,'T12,T12,'F12,F12>;
77200	     IF FOR NEW X←2 TO NEX+1; AND MAT3(EXAMPLE[X,1],F12) THEN
77300	     FOR NEW T10←1 TO LENGTH(ORD[10]) DO BEGIN
77400	     F10←ORD[10,T10];
77500	     IF GREATERP(MSGLEVEL,11) THEN PRINT <12,'T12,T12,'F12,F12>;
77600	     IF FOR NEW X←2 TO NEX+1; AND MAT2(EXAMPLE[X,1],F10,F11,F12) THEN
77700	     FOR NEW T15← 1 TO LENGTH(ORD[15]) DO BEGIN
77800	     F15← ORD[15,T15];
77900	     IF GREATERP(MSGLEVEL,12) THEN PRINT <15,'T15,T15,'F15,F15>;
78000	     IF FOR NEW X←2 TO NEX+1; AND MAT(EXAMPLE[X,1],F15) THEN
78100	     FOR NEW F16←1 TO LENGTH(ORD[16]) DO BEGIN
78200	     F16←ORD[16,T16];
78300	     IF GREATERP(MSGLEVEL,13) THEN PRINT <16,'T16,T16,'F16,F16>;
78400	     IF FOR NEW X←2 TO NEX+1; AND MAT3(EXAMPLE[X,1],F16) THEN
78500	     FOR NEW T14←1 TO LENGTH(ORD[14]) DO BEGIN
78600	     F14←ORD[14,T14];
78700	     IF GREATERP(MSGLEVEL,14) THEN PRINT <14,'T14,T14,'F14,F14>;
78800	     IF FOR NEW X←2 TO NEX+1; AND MAT2(EXAMPLE[X,1],F14,F15,F16) THEN
78900	     FOR NEW T18←1 TO LENGTH(ORD[18]) DO BEGIN
79000	     F18←ORD[18,T18];
79100	     IF GREATERP(MSGLEVEL,15) THEN PRINT <18,'T18,T18,'F18,F18>;
79200	     IF FOR NEW X←2 TO NEX+1; AND MAT(EXAMPLE[X,1],F18) THEN
79300	     FOR NEW T19←1 TO LENGTH(ORD[19]) DO BEGIN
79400	     F19←ORD[19,T19];
79500	     IF GREATERP(MSGLEVEL,16) THEN PRINT <19,'T19,T19,'F19,F19>;
81400	     IF I THEN PRINTSTR '" HOORAY, HOORAY
81500	                               SUCCESS";
81600	     RETURN I;
81999	     END UNTIL I
82000	     END UNTIL I
82100	     END UNTIL I
82200	     END UNTIL I
82300	     END UNTIL I
82400	     END UNTIL I
82500	     END UNTIL I
82600	     END UNTIL I
82700	     END UNTIL I
82800	     END UNTIL I
82900	     END UNTIL I
83000	     END UNTIL I
83100	     END UNTIL I
83200	     END UNTIL I
83300	      END UNTIL I
83400	     END UNTIL I
83500	     END UNTIL I;
83600	     IF GREATERP(MSGLEVEL,0) THEN
83700	      PRINT <'F1TOF19,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,
83800	        F11,F12,F13,F14,F15,F16,F17,F18,F19,'C1234,C1,C2,
83900	        C3,C4>;
84000	     KNOWNF ← FN2 CONS KNOWNF;
84100	     TARG ← GET('FN,'TARGS) CONS TARG;
84200	     NARG← N CONS NARG;
84300	     TRE ← GET('FN,'TRES) CONS TRE;
84400	     BA2 ← FN2 CONS BA2;
84500	     IF GREATERP(MSGLEVEL,35) THEN PRINT <'KNOWNF,KNOWNF,
84600	       'RELATESDF,RELATEDF,'TARG,TARG,'NARG,NARG,'TRE,
84700	       TRE,'BA2,BA2>;
84800	      PUTPROP(FN2,2,NARGS);
84900	     PUTPROP(FN2,IHOLD,TARGS);
85000	     PUTPROP(FN2,'ANY,TRES);
85100	      FINALIZE2();
85200	     FOR NEW J←1 TO 19 DO PUTPROP(FN2,11,P2F[J]);
85300	     RETURN FN2;
85400	     END;
99600	END.